package cn.tk.model.pojo.mr.engine;

import cn.tk.model.pojo.mr.flow.ReplyDTO;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by denglw on 2021/8/9.<br/>
 * Desc: 多轮回复实体
 */
@Data @NoArgsConstructor
public class MrReply {

    /**
     * 常规的正常回复列表：
     * 可能包括全局回复、连贯话术、跳回话术、正常回复话术等的组合情况
     */
    private List<ReplyDTO> customReplies;

    /**
     * 超时回复列表
     */
    private List<TimeoutReply> timeoutReplies;

    /**
     * 语音识别失败回复列表
     */
    private List<VoiceNrReply> voiceNrReplies;

    /**
     * 是否要结束会话
     */
    private boolean endSession;

    /**
     * 是否监听键盘
     */
    private boolean keyboardListened;

    /**
     * 是否触发短信
     */
    private boolean smsSend;

    /**
     * 是否静默
     */
    private boolean silent;

    /**
     * 不响应问题集合
     */
    private List<String> filterQuestions;

    public static MrReply defaultReply() {
        MrReply reply = new MrReply();
        reply.setCustomReplies(new ArrayList<>());
        reply.setTimeoutReplies(new ArrayList<>());
        reply.setVoiceNrReplies(new ArrayList<>());
        reply.setEndSession(false);
        reply.setKeyboardListened(false);
        reply.setSmsSend(false);
        reply.setSilent(false);
        reply.setFilterQuestions(new ArrayList<>());
        return reply;
    }

    @Data @NoArgsConstructor
    public static class TimeoutReply {
        /**
         * 超时秒数
         */
        private Integer timeout;

        /**
         * 超时话术
         */
        private ReplyDTO reply;
    }

    @Data @NoArgsConstructor
    public static class VoiceNrReply {
        /**
         * 语音识别失败话术
         */
        private ReplyDTO reply;
    }

}
